package com.example.tomatotodo.util;

import android.content.Context;
import android.content.SharedPreferences;

/**
 * Token 管理工具类，用于存储、获取和清除 JWT 令牌
 */
public class TokenManager {
    private static final String PREFS_NAME = "auth_prefs"; // SharedPreferences 名称
    private static final String TOKEN_KEY = "jwt_token";    // 令牌存储键名

    // 私有构造函数，防止实例化
    private TokenManager() {
    }

    /**
     * 保存令牌到 SharedPreferences
     *
     * @param context 上下文
     * @param token   待保存的 JWT 令牌（格式："Bearer {token}"）
     */
    public static void saveToken(Context context, String token) {
        SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        prefs.edit().putString(TOKEN_KEY, token).apply();
    }

    /**
     * 从 SharedPreferences 获取令牌
     *
     * @param context 上下文
     * @return 存储的 JWT 令牌，若不存在则返回 null
     */
    public static String getToken(Context context) {
        SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        return prefs.getString(TOKEN_KEY, null);
    }

    /**
     * 删除 SharedPreferences 的令牌 (退出登录时使用)
     *
     * @param context上下文
     */
    public static void clearToken(Context context) {
        SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        prefs.edit().remove(TOKEN_KEY).apply();
    }

    /**
     * 判断是否已登录（令牌是否存在且非空）
     *
     * @param context 上下文
     * @return true：已登录；false：未登录
     */
    public static boolean isLoggedIn(Context context) {
        String token = getToken(context);
        return token != null && !token.trim().isEmpty();
    }
}